package com.doubi.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.doubi.mapper.SysLogMapper;
import com.doubi.model.sys.TSysLog;
import com.doubi.utils.DataUtil;
import com.doubi.vo.AppModel;
import com.doubi.vo.PageVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;

@Service
public class SysLogService extends ServiceImpl<SysLogMapper, TSysLog> {

    @Autowired
    private SysLogMapper sysLogMapper;

    /**
     * MrDoubi
     * 2019年10月27日 12:50:43
     * 记录日志主要方法
     * @param sysLog bean
     */
    @Async("taskExecutor")
    public void saveBean(TSysLog sysLog) {
        sysLogMapper.insert(sysLog);
    }

    /**
     * MrDoubi
     * 2019年10月27日 12:50:56
     * 分页日志信息
     * @param page page对象
     * @param sysLog 日志对象
     * @return page
     */
    public PageVo<TSysLog> getPage(PageVo<TSysLog> page, TSysLog sysLog) {
        QueryWrapper<TSysLog> wrapper = new QueryWrapper<>();
        if(DataUtil.isNotEmpty(sysLog.getTitle())){
            wrapper.like("title",sysLog.getTitle());
        }
        if(DataUtil.isNotEmpty(sysLog.getMethod())){
            wrapper.like("method",sysLog.getMethod());
        }
        if(DataUtil.isNotEmpty(sysLog.getOperName())){
            wrapper.like("oper_name",sysLog.getOperName());
        }
        if(DataUtil.isNotEmpty(sysLog.getOperUrl())){
            wrapper.like("oper_url",sysLog.getOperUrl());
        }
        if(DataUtil.isNotEmpty(sysLog.getOperIp())){
            wrapper.like("oper_ip",sysLog.getOperIp());
        }
        wrapper.orderByAsc("oper_time");
        sysLogMapper.selectPage(page,wrapper);
        return page;
    }


    /**
     * MrDoubi
     * 2019年10月27日 12:51:17
     * 删除日志信息
     * @param sysLog 日志对象
     * @return model
     */
    public AppModel delBean(TSysLog sysLog) {
        sysLog = sysLogMapper.selectById(sysLog.getOperId());
        if(DataUtil.isNotEmpty(sysLog)){
            sysLogMapper.deleteById(sysLog.getOperId());
            return AppModel.success();
        }else {
            return AppModel.error();
        }
    }
}
